package cn.bx.bid.service;

import cn.bx.bid.dao.UserDao;
import cn.bx.bid.entity.Page;
import cn.bx.bid.entity.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;


//M V C
@Service

public class UserService {
	public static final int PAGE_SIZE = Page.PAGE_SIZE;
@Resource
	private UserDao userDao;

	public int add(User u) {
//		SqlSession s = MyBatisUtil.get();
//		try {
		//	UserDao userDao = s.getMapper(UserDao.class);
		return userDao.add(u);
//		} finally {
//			s.commit();
//			MyBatisUtil.close(s);
//		}
	}

	public int update(User u) {
//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
		return userDao.update(u);
//		} finally {
//			s.commit();
//			MyBatisUtil.close(s);
//		}
	}
	@Transactional(readOnly =false)
	public int batchDel(long[] ids) {
//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
		return userDao.batchDel(ids);
//		} finally {
//			s.commit();
//			MyBatisUtil.close(s);
//		}
	}
//	// Map
//	public Page<User> paging(int pageNo) {
//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
//			List<User> list = userDao.paging(pageNo, PAGE_SIZE);
//			int total = userDao.findTotal();
//			Page<User> p = new Page<User>(0, total, list);
//			return p;
//		} finally {
//			MyBatisUtil.close(s);
//		}
//	}

	public Page<User> paging(int pageNo, int limit, String name, Date start, Date end) {

//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
		List<User> list = userDao.search(pageNo, limit, name, start, end);
		int total = userDao.searchTotal(name, start, end);
		Page<User> p = new Page<User>(total, limit, list,pageNo);
		return p;
//		} finally {
//			MyBatisUtil.close(s);
//		}

	}

	public User get(long id) {
//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
		return userDao.get(id);

//		} finally {
//			MyBatisUtil.close(s);
//		}
	}

	public boolean checkUserNameRepeat(Long id, String name) {
//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
		return userDao.checkUserNameRepeat(id, name) > 0;

//		} finally {
//			MyBatisUtil.close(s);
//		}
	}

	public User login(String username, String password) {
//		SqlSession s = MyBatisUtil.get();
//		try {
//			UserDao userDao = s.getMapper(UserDao.class);
		return userDao.login(username, password);

//		} finally {
//			MyBatisUtil.close(s);
//		}
	}

	public int updatepassword(User user) {
	return userDao.updatepassword(user);

	}
}
